package com.test.clyq.dao;

import java.util.List;

import com.test.clyq.entity.EntityItem;
import com.test.clyq.entity.Users;
import com.test.util.Pagination;

/**
 * NLEntityItemDao. <br>
 * 内容信息管理.
 * <p>
 * Copyright: Copyright (c) 2010-3-17 下午04:31:08
 * <p>
 * Company: 北京宽连十方数字技术有限公司
 * <p>
 * Author: liuxl@c-platform.com
 * <p>
 * Version: 1.0
 * <p>
 */
public interface EntityItemDao {

	/**
	 * 新增内容信息
	 * 
	 * @param entityitem
	 *            内容实例
	 * @param user
	 *            用户实例
	 */
	public void addEntityItem(EntityItem entityitem, Users user);

	/**
	 * 批量新增内容信息
	 * 
	 * @param list
	 *            内容实例列表
	 * @param user
	 *            用户实例
	 */
	public void addBAtch(List list, Users user);

	/**
	 * 根据内容ID删除内容
	 * 
	 * @param id
	 *            内容ID
	 * @param user
	 *            用户实例
	 * @return true or false
	 */
	public boolean delEntityItemById(Long id, Users user);

	/**
	 * 读取所有的entityItem
	 * 
	 * @return
	 */
	public List<EntityItem> getAllEntityItems();

	/**
	 * 文章code
	 * 
	 * @return
	 */
	public String getEntityCode(Long categoryId);

	/***************************************************************************
	 * 根据栏目ID 或 父ID获取文章
	 * 
	 * @param categoryId
	 * @param pagination
	 * @param where
	 * @param order
	 * @return
	 */
	public List<EntityItem> getEntityItemByCategoryId(Long categoryId, Pagination pagination, String where, String order);

	/**
	 * 根据内容id获得内容信息
	 * 
	 * @param id
	 *            内容ID
	 * @return NLEntityItem 内容实体
	 */
	public EntityItem getEntityItemById(Long id);

	/**
	 * 根据栏目ID获得内容信息列表（分页使用）
	 * 
	 * @param categoryId
	 *            栏目ID
	 * @return 内容信息列表结果集合
	 */
	public List<EntityItem> getEntityItemListByCategoryId(Long categoryId, Pagination pagination);

	/**
	 * 根据栏目ID获得内容信息列表（分页使用）
	 * 
	 * @param categoryId
	 *            栏目ID
	 * @return 内容信息列表结果集合
	 */
	public List<EntityItem> getEntityItemListByCategoryId(Long categoryId, Pagination pagination, String where, String order);

	/**
	 * 根据keyword来进行模糊查找（匹配标题和关键字）
	 * 
	 * @param keyword
	 *            要查找的关键词
	 * @param pagination
	 *            分页对象
	 * @return
	 */
	public List<EntityItem> getEntityItemListByKeyWord(String keyword, Pagination pagination);

	/**
	 * 根据一级栏目ID获得所有二级栏目的置顶内容信息列表（分页使用）
	 * 
	 * @param categoryId
	 * @return 内容信息列表结果集合
	 */
	public List<EntityItem> getEntityItemListByParentCategoryId(Long categoryId, Pagination pagination, String where, String order);

	/**
	 * 获取期刊栏目下的成品
	 * 
	 * @param categoryId
	 *            栏目ID
	 * @return 内容信息列表结果集合
	 */
	public List<EntityItem> getEntityItemListForJournals(Long categoryId, Pagination pagination);

	/**
	 * 根据网站ID获得回收站信息列表（分页使用）
	 * 
	 * @return 回收站信息列表结果集合
	 */
	public List<EntityItem> getRecycleBinListByWebsiteId(Pagination pagination);

	/**
	 * 通过原文章id找到所有关联的文章列表(复制的, 包含原文章)
	 * 
	 * @param entityItemId
	 *            原文章id
	 * @return
	 */
	public List<EntityItem> getRelateList(Long entityItemId);

	public void merge(EntityItem entityitem, Users user);

	/**
	 * 保存或更新内容信息
	 * 
	 * @param entityitem
	 *            内容实例
	 * @param user
	 *            用户实例
	 */
	public void saveOrUpdate(EntityItem entityitem, Users user);

	/***************************************************************************
	 * 根据taobaoId获取文章
	 * 
	 * @param taobaoId
	 * @return EntityItem
	 */
	public EntityItem getEntityItemByTaoBaoId(String taobaoId);

}
